band_mtx_mult Interface

public interface band_mtx_mult

An interface to the banded matrix multiplication routines.


Module Procedures

private subroutine band_mtx_vec_mult_dbl(trans, kl, ku, alpha, a, x, beta, y, err)

Performs the matrix operation or where is a banded matrix.

The banded matrix is stored in a compressed form supplied column by column. The following code segment transfers between a full matrix to the bonded matrix storage scheme. \code{fortran} do j = 1, n k = ku + 1 - j do i = max(1, j - ku), min(n, j + kl) a(k + i, j) = matrix(i, j) end do end do \endcode

Arguments

Type IntentOptional Attributes Name
logical, intent(in) :: trans

A logical flag indicating whether to perform the operation (FALSE) or (TRUE).

integer(kind=int32), intent(in) :: kl

The number of subdiagonals in the banded matrix .

integer(kind=int32), intent(in) :: ku

The number of superdiagonals in the banded matrix .

real(kind=real64), intent(in) :: alpha

The scalar to multiply by.

real(kind=real64), intent(in), dimension(:,:) :: a

The banded matrix to multiply by.

real(kind=real64), intent(in), dimension(:) :: x

The vector to multiply by.

real(kind=real64), intent(in) :: beta

The scalar to multiply by.

real(kind=real64), intent(inout), dimension(:) :: y

On input, the vector to multiply. On output, the result of the operation.

class(errors), intent(inout), optional, target :: err

An error object to report any errors that occur.

private subroutine band_mtx_vec_mult_cmplx(trans, kl, ku, alpha, a, x, beta, y, err)

Performs the matrix operation where is a banded matrix.

The banded matrix is stored in a compressed form supplied column by column. The following code segment transfers between a full matrix to the bonded matrix storage scheme. \code{fortran} do j = 1, n k = ku + 1 - j do i = max(1, j - ku), min(n, j + kl) a(k + i, j) = matrix(i, j) end do end do \endcode

Arguments

Type IntentOptional Attributes Name
integer(kind=int32), intent(in) :: trans

An integer flag indicating the operation to perform on matrix . Possible options are:

  • LA_NO_OPERATION: No operation is performed on matrix.

  • LA_TRANSPOSE: The transpose of matrix is used.

  • LA_HERMITIAN_TRANSPOSE: The Hermitian transpose of matrix is used.

integer(kind=int32), intent(in) :: kl

The number of subdiagonals in the banded matrix .

integer(kind=int32), intent(in) :: ku

The number of superdiagonals in the banded matrix .

complex(kind=real64), intent(in) :: alpha

The scalar to multiply by.

complex(kind=real64), intent(in), dimension(:,:) :: a

The banded matrix to multiply by.

complex(kind=real64), intent(in), dimension(:) :: x

The vector to multiply by.

complex(kind=real64), intent(in) :: beta

The scalar to multiply by.

complex(kind=real64), intent(inout), dimension(:) :: y

On input, the vector to multiply. On output, the result of the operation.

class(errors), intent(inout), optional, target :: err

An error object to report any errors that occur.